package com.master.rl;

import java.io.*;
import java.sql.*;
import java.text.*;

import com.master.ed.*;
import com.master.root.*;
import com.master.util.*;
import com.master.util.bd.*;
import com.master.util.ed.*;
import com.master.util.rl.*;

public class MultaRL extends Transacao{

  FormataDataBean dataFormatada = new FormataDataBean();
  Parametro_FixoED parametro_FixoED = new Parametro_FixoED();
  DecimalFormat dec2 = new DecimalFormat("###,###,##0");
  private ExecutaSQL executasql;

  public MultaRL() {
  }


  public byte[] gera_Relatorio_Multa(ResultSet res, MultaED ed)
  throws Excecoes{
      int iTotalPorMulta = 0;
      int iTotalGeral = 0;
      double tg_peso=0, tg_vl_nota_fiscal=0, tg_vl_frete_peso=0, tg_vl_frete_valor=0, tg_vl_pedagio=0, tg_vl_outros=0, tg_vl_total_frete=0, tg_vl_icms=0, tg_vl_base_icms=0;

      String sqlBusca = null;
      String branco="                                                                   ";
      double outros=0;

      try{
          GeraXML x = new GeraXML();
          DecimalFormat dec = new DecimalFormat("###,###,##0.00");

          ResultSet resLocal = null;
          ResultSet resCTO = null;



          String oid_Multa = null;
          String oid_Multa_Aux = null;

          // // ("rel 0 ");


          boolean bPrimVez = true;

          while (res.next()){
              this.inicioTransacao();
              this.executasql = this.sql;


              // // ("rel 1 ");

              //primeira volta no loop
              if (bPrimVez == true){
                  bPrimVez = false;
                  oid_Multa = res.getString("OID_Multa");
                  oid_Multa_Aux = new String(oid_Multa);
                  // // ("rel 2 ");


                  x.insereDTD();

                  x.insereTagXML("RELATORIO", GeraXML.ABRE);

                  x.insereTagXML("ID_RELATORIO", GeraXML.ABRE);
                  x.insereElementoXML("CODIGO","manR101");
                  x.insereElementoXML("TITULO","Multas de Embarque");
                  x.insereElementoXML("NR_VIAGEM",res.getString("NR_Multa") == null ? "" : res.getString("NR_Multa"));
                  x.insereElementoXML("DESTINO",res.getString("NM_Cidade_Multa") == null ? "" : res.getString("NM_Cidade_Multa"));
                  x.insereTagXML("ID_RELATORIO", GeraXML.FECHA);

                  // // ("rel 3 ");

                  x.insereTagXML("PROCESSAMENTO", GeraXML.ABRE);

                  sqlBusca = "Select "+
                  " Pessoas.NR_CNPJ_CPF, "+
                  " Pessoas.NM_RAZAO_SOCIAL, "+
                  " Pessoas.NM_ENDERECO, "+
                  " Pessoas.NR_CEP, "+
                  " Pessoas.NM_BAIRRO, "+
                  " Cidades.NM_CIDADE, "+
                  " Estados.CD_ESTADO "+
                  " FROM "+
                  " Unidades, Multas, Pessoas, "+
                  " Cidades,  "+
                  " Regioes_Estados, "+
                  " Estados "+
                  " WHERE Multas.Oid_unidade = Unidades.Oid_unidade "+
                  " AND Unidades.OID_PESSOA = Pessoas.OID_PESSOA "+
                  " AND Pessoas.OID_CIDADE = Cidades.OID_CIDADE "+
                  " AND Cidades.OID_REGIAO_ESTADO = Regioes_Estados.OID_REGIAO_ESTADO "+
                  " AND Regioes_Estados.OID_ESTADO = Estados.OID_ESTADO "+
                  " AND Multas.oid_Multa = '" + res.getString("OID_Multa") + "'";

                  resLocal = this.executasql.executarConsulta(sqlBusca);
                  while (resLocal.next()){
                      // // ("rel 4 ");

                      x.insereElementoXML("EMPRESA",resLocal.getString("NM_RAZAO_SOCIAL") == null ? "" : resLocal.getString("NM_RAZAO_SOCIAL"));
                      x.insereElementoXML("ENDERECO",resLocal.getString("NM_ENDERECO") == null ? "" : resLocal.getString("NM_ENDERECO"));
                      x.insereElementoXML("CIDADE",resLocal.getString("NM_CIDADE") == null ? "" : resLocal.getString("NM_CIDADE"));
                      x.insereElementoXML("CNPJ",resLocal.getString("NR_CNPJ_CPF") == null ? "" : resLocal.getString("NR_CNPJ_CPF"));
                  }

                  // // ("rel 5 ");

                  String data = Data.getDataDMY();
                  String hora = Data.getHoraHM();

                  x.insereElementoXML("DATA",data);
                  x.insereElementoXML("HORARIO",hora);

                  x.insereElementoXML("HR_SAIDA",hora);
                  x.insereElementoXML("DT_SAIDA",  res.getString("DT_Emissao") == null ? "" : dataFormatada.getDT_FormataData(res.getString("DT_Emissao")));
                  // // ("rel 6 ");

                  x.insereElementoXML("DT_PREVISAO_CHEGADA",  res.getString("DT_Previsao_Chegada") == null ? "" : dataFormatada.getDT_FormataData(res.getString("DT_Previsao_Chegada")));
                  x.insereElementoXML("HR_PREVISAO_CHEGADA",res.getString("HR_Previsao_Chegada") == null ? "" : res.getString("HR_Previsao_Chegada"));


                  x.insereTagXML("PROCESSAMENTO", GeraXML.FECHA);
                  x.insereTagXML("LISTA_UNID", GeraXML.ABRE);

                  x.insereTagXML("UNID", GeraXML.ABRE);

                  x.insereTagXML("LISTA_Multa", GeraXML.ABRE);
              }

              // // ("rel 7 ");

              x.insereTagXML("MULTA", GeraXML.ABRE);

              x.insereElementoXML("MULTA",res.getString("NR_Multa") == null ? "" : res.getString("NR_Multa"));
              x.insereElementoXML("MOTORISTA",(res.getString("NM_Motorista")+branco).substring(0,25));
              x.insereElementoXML("VEICULO",res.getString("NR_Placa") == null ? "" : res.getString("NR_Placa"));
              x.insereElementoXML("DT_EMISSAO",  res.getString("DT_EMISSAO") == null ? "" : dataFormatada.getDT_FormataData(res.getString("DT_EMISSAO")));

              x.insereElementoXML("DT_PREVISAO_CHEGADA",  dataFormatada.getDT_FormataData(res.getString("DT_Previsao_Chegada")) + " - " + res.getString("HR_Previsao_Chegada"));

              x.insereElementoXML("EXPRESSO",  res.getString("DM_EXPRESSO") == null ? "" : res.getString("DM_EXPRESSO"));

              x.insereElementoXML("CIDADE_UNIDADE", JavaUtil.getStringNotNull(res.getString("NM_Cidade_Unidade"), ""));
              String cidadeOrigem = JavaUtil.getStringNotNull(res.getString("NM_Cidade_Unidade"), "");
              String cidadeDestino = res.getString("NM_Cidade_Multa");
              String cidadeOrigemDestino = JavaUtil.getStringNotNull(cidadeDestino, "", cidadeOrigem + "->" + cidadeDestino);
              x.insereElementoXML("CIDADE_ORIGEM_DESTINO", cidadeOrigemDestino);

              x.insereTagXML("MULTA", GeraXML.FECHA);

              iTotalPorMulta++;
              iTotalGeral++;
              this.fimTransacao(true);

          }

          x.insereTagXML("LISTA_Multa", GeraXML.FECHA);

          x.insereElementoXML("TOTAL",Integer.toString(iTotalPorMulta));
          x.insereElementoXML("PESO",dec2.format(tg_peso));
          x.insereElementoXML("TOT_FRETE",dec.format(tg_vl_total_frete));
          x.insereElementoXML("FRETE_PESO",dec.format(tg_vl_frete_peso));
          x.insereElementoXML("FRETE_VALOR",dec.format(tg_vl_frete_valor));
          x.insereElementoXML("PEDAGIO",dec.format(tg_vl_pedagio));
          x.insereElementoXML("OUTROS",dec.format(tg_vl_outros));
          x.insereElementoXML("VL_BASE_CALCULO_ICMS",dec.format(tg_vl_base_icms));
          x.insereElementoXML("VL_ICMS",dec.format(tg_vl_icms));
          x.insereElementoXML("VAL_MERCADORIA",dec.format(tg_vl_nota_fiscal));


          x.insereTagXML("UNID", GeraXML.FECHA);
          x.insereTagXML("LISTA_UNID", GeraXML.FECHA);
          x.insereTagXML("RELATORIO", GeraXML.FECHA);

          GeraPDF geraPDF = new GeraPDF();
          geraPDF.setXML(x.retornaXML());

          // // (x.retornaXML().toString());

          String CaminhoXSL = System.getProperty("CaminhoXSL");
          String relatorio="Relatorio_Multa_Resumo";

          if ("0".equals(ed.getDM_Relatorio()))
            relatorio="Relatorio_Multa_Resumo";
          if ("1".equals(ed.getDM_Relatorio()))
            relatorio="Relatorio_Multa_Resumo1";
          if ("2".equals(ed.getDM_Relatorio()))
            relatorio="Relatorio_Multa_Resumo2";
          if ("3".equals(ed.getDM_Relatorio()))
            relatorio="Relatorio_Multa_Resumo3";

          geraPDF.setXSL(new StringBuffer(CaminhoXSL+relatorio+ ".xsl"));


          geraPDF.parseToBytes();

          return geraPDF.getArrayPDF();
      } catch(SQLException e) {
          throw new Excecoes(e.getMessage(), e, getClass().getName(), "Relatorio_Multa(ResultSet res)");
      }
  }



}//classe
